home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3 (Developer)…68k, x86, SPARC, PA-RISC] / NeXTSTEP 3.3 Dev Intel.iso / NextDeveloper / Source / GNU / cctools / as / m98k-opcode.h < prev    next >
C/C++ Source or Header  |  1993-09-09  |  46KB  |  962 lines

  1. /* operands types */
  2. enum optype {
  3.     NONE,    /* no operand */
  4.     PCREL,    /* PC relative (branch offset) */
  5.     BADDR,    /* Branch address (sign extended absolute address) */
  6.     D,        /* 16 bit displacement */
  7.     DS,        /* 14 bit displacement (double word) */
  8.     SI,        /* signed 16 bit immediate */
  9.     UI,        /* unsigned 16 bit immediate */
  10.     GREG,    /* general register */
  11.     G0REG,    /* general register r1-r31 or 0 */
  12.     FREG,    /* float register */
  13.     SGREG,    /* segment register */
  14.     SPREG,    /* special register (or 10 bit number, 5 bit halves reversed) */
  15.     BCND,    /* branch condition opcode */
  16.     CRF,    /* condition register field */
  17.     CRFONLY,    /* condition register field only no expression allowed */
  18.     sh,        /* 6 bit number (0 - 63) (sh field, split and reversed) */
  19.     mb,        /* 6 bit number (0 - 63) (mb field, mb5 || mb0:4 reversed) */
  20.     NUM,    /* number */
  21.     NUM0    /* number (where 1<<width is the same as 0) */
  22. };
  23.  
  24. struct op {
  25.    unsigned long offset:5;
  26.    unsigned long width:5;
  27.    enum optype   type:6;
  28. };
  29.  
  30. struct m98k_opcode {
  31.    unsigned long opcode;
  32.    char         *name;
  33.    struct op     ops[5];
  34. };
  35.  
  36. #define IS_BRANCH_CONDITIONAL(opcode) \
  37.     (((((opcode) & 0xfc0003fe) == 0x4c000020) || \
  38.       (((opcode) & 0xfc000000) == 0x40000000)) && \
  39.        (((opcode) & 0x03e00000) != 0x02800000) )
  40. #define Y_BIT (1 << 21)
  41.  
  42. static const struct m98k_opcode m98k_opcodes[] = {
  43.  { 0x38000000, "li",      {{21,5,GREG}, {0,16,SI}} },
  44.  { 0x3c000000, "lis",     {{21,5,GREG}, {0,16,SI}} },
  45.  
  46.  { 0x38000000, "addi",    {{21,5,GREG}, {16,5,G0REG},{0,16,SI}} },
  47. /* on 64-bit implementations the immediate is signed and makes a differernce
  48.    but on 32-bit implementaions it doesn't matter and causes an error */
  49.  { 0x3c000000, "addis",   {{21,5,GREG}, {16,5,G0REG},{0,16,UI}} },
  50.  { 0x30000000, "addic",   {{21,5,GREG}, {16,5,GREG}, {0,16,SI}} },
  51.  { 0x34000000, "addic.",  {{21,5,GREG}, {16,5,GREG}, {0,16,SI}} },
  52.  { 0x7c000214, "add",     {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  53.  { 0x7c000215, "add.",    {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  54.  { 0x7c000614, "addo",    {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  55.  { 0x7c000615, "addo.",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  56.  
  57.  { 0x7c000014, "addc",    {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  58.  { 0x7c000015, "addc.",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  59.  { 0x7c000414, "addco",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  60.  { 0x7c000415, "addco.",  {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  61.  
  62.  { 0x7c000114, "adde",    {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  63.  { 0x7c000115, "adde.",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  64.  { 0x7c000514, "addeo",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  65.  { 0x7c000515, "addeo.",  {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  66.  
  67.  { 0x7c0001d4, "addme",   {{21,5,GREG}, {16,5,GREG}} },
  68.  { 0x7c0001d5, "addme.",  {{21,5,GREG}, {16,5,GREG}} },
  69.  { 0x7c0005d4, "addmeo",  {{21,5,GREG}, {16,5,GREG}} },
  70.  { 0x7c0005d5, "addmeo.", {{21,5,GREG}, {16,5,GREG}} },
  71.  
  72.  { 0x7c000194, "addze",   {{21,5,GREG}, {16,5,GREG}} },
  73.  { 0x7c000195, "addze.",  {{21,5,GREG}, {16,5,GREG}} },
  74.  { 0x7c000594, "addzeo",  {{21,5,GREG}, {16,5,GREG}} },
  75.  { 0x7c000595, "addzeo.", {{21,5,GREG}, {16,5,GREG}} },
  76.  
  77.  { 0x70000000, "andi.",   {{16,5,GREG}, {21,5,GREG}, {0,16,UI}} },
  78.  { 0x74000000, "andis.",  {{16,5,GREG}, {21,5,GREG}, {0,16,UI}} },
  79.  { 0x7c000038, "and",     {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  80.  { 0x7c000039, "and.",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  81.  
  82.  { 0x7c000078, "andc",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  83.  { 0x7c000079, "andc.",   {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  84.  
  85.  { 0x48000000, "b",       {{2,24,PCREL}} },
  86.  { 0x48000002, "ba",      {{2,24,BADDR}} },
  87.  { 0x48000001, "bl",      {{2,24,PCREL}} },
  88.  { 0x48000003, "bla",     {{2,24,BADDR}} },
  89.  
  90.  { 0x40000000, "bc",      {{21,5,NUM},  {16,5,NUM}, {2,14,PCREL}} },
  91.  { 0x40000002, "bca",     {{21,5,NUM},  {16,5,NUM}, {2,14,BADDR}} },
  92.  { 0x40000001, "bcl",     {{21,5,NUM},  {16,5,NUM}, {2,14,PCREL}} },
  93.  { 0x40000003, "bcla",    {{21,5,NUM},  {16,5,NUM}, {2,14,BADDR}} },
  94.  
  95.  { 0x4c000420, "bcctr",   {{21,5,NUM},  {16,5,NUM}} },
  96.  { 0x4c000421, "bcctrl",  {{21,5,NUM},  {16,5,NUM}} },
  97.  { 0x4c000020, "bclr",    {{21,5,NUM},  {16,5,NUM}} },
  98.  { 0x4c000021, "bclrl",   {{21,5,NUM},  {16,5,NUM}} },
  99.  
  100. /* Basic branch mnemonics (assember extended mnemonics) */
  101. /* { 0x42800000, "b",       {{2,14,PCREL}} }, overlaps */
  102. /* { 0x42800001, "bl",      {{2,14,PCREL}} }, overlaps */
  103.  { 0x41800000, "bt",      {{16,5,BCND}, {2,14,PCREL}} },
  104.  { 0x41800001, "btl",     {{16,5,BCND}, {2,14,PCREL}} },
  105.  { 0x40800000, "bf",      {{16,5,BCND}, {2,14,PCREL}} },
  106.  { 0x40800001, "bfl",     {{16,5,BCND}, {2,14,PCREL}} },
  107.  { 0x42000000, "bdnz",    {{2,14,PCREL}} },
  108.  { 0x42000001, "bdnzl",   {{2,14,PCREL}} },
  109.  { 0x41000000, "bdnzt",   {{16,5,BCND}, {2,14,PCREL}} },
  110.  { 0x41000001, "bdnztl",  {{16,5,BCND}, {2,14,PCREL}} },
  111.  { 0x40000000, "bdnzf",   {{16,5,BCND}, {2,14,PCREL}} },
  112.  { 0x40000001, "bdnzfl",  {{16,5,BCND}, {2,14,PCREL}} },
  113.  { 0x42400000, "bdz",     {{2,14,PCREL}} },
  114.  { 0x42400001, "bdzl",    {{2,14,PCREL}} },
  115.  { 0x41400000, "bdzt",    {{16,5,BCND}, {2,14,PCREL}} },
  116.  { 0x41400001, "bdztl",   {{16,5,BCND}, {2,14,PCREL}} },
  117.  { 0x40400000, "bdzf",    {{16,5,BCND}, {2,14,PCREL}} },
  118.  { 0x40400001, "bdzfl",   {{16,5,BCND}, {2,14,PCREL}} },
  119.  
  120. /* { 0x42800002, "ba",      {{2,14,BADDR}} }, overlaps */
  121. /* { 0x42800003, "bla",     {{2,14,BADDR}} }, overlaps */
  122.  { 0x41800002, "bta",     {{16,5,BCND}, {2,14,BADDR}} },
  123.  { 0x41800003, "btla",    {{16,5,BCND}, {2,14,BADDR}} },
  124.  { 0x40800002, "bfa",     {{16,5,BCND}, {2,14,BADDR}} },
  125.  { 0x40800003, "bfla",    {{16,5,BCND}, {2,14,BADDR}} },
  126.  { 0x42000002, "bdnza",   {{2,14,BADDR}} },
  127.  { 0x42000003, "bdnzla",  {{2,14,BADDR}} },
  128.  { 0x41000002, "bdnzta",  {{16,5,BCND}, {2,14,BADDR}} },
  129.  { 0x41000003, "bdnztla", {{16,5,BCND}, {2,14,BADDR}} },
  130.  { 0x40000002, "bdnzfa",  {{16,5,BCND}, {2,14,BADDR}} },
  131.  { 0x40000003, "bdnzfla", {{16,5,BCND}, {2,14,BADDR}} },
  132.  { 0x42400002, "bdza",    {{2,14,BADDR}} },
  133.  { 0x42400003, "bdzla",   {{2,14,BADDR}} },
  134.  { 0x41400002, "bdzta",   {{16,5,BCND}, {2,14,BADDR}} },
  135.  { 0x41400003, "bdztla",  {{16,5,BCND}, {2,14,BADDR}} },
  136.  { 0x40400002, "bdzfa",   {{16,5,BCND}, {2,14,BADDR}} },
  137.  { 0x40400003, "bdzfla",  {{16,5,BCND}, {2,14,BADDR}} },
  138.  
  139.  { 0x4e800020, "blr",     },
  140.  { 0x4e800021, "blrl",    },
  141.  { 0x4d800020, "btlr",    {{16,5,BCND}} },
  142.  { 0x4d800021, "btlrl",   {{16,5,BCND}} },
  143.  { 0x4c800020, "bflr",    {{16,5,BCND}} },
  144.  { 0x4c800021, "bflrl",   {{16,5,BCND}} },
  145.  { 0x4e000020, "bdnzlr",  },
  146.  { 0x4e000021, "bdnzlrl", },
  147.  { 0x4d000020, "bdnztlr", {{16,5,BCND}} },
  148.  { 0x4d000021, "bdnztlrl",{{16,5,BCND}} },
  149.  { 0x4c000020, "bdnzflr", {{16,5,BCND}} },
  150.  { 0x4c000021, "bdnzflrl",{{16,5,BCND}} },
  151.  { 0x4e400020, "bdzlr",   },
  152.  { 0x4e400021, "bdzlrl",  },
  153.  { 0x4d400020, "bdztlr",  {{16,5,BCND}} },
  154.  { 0x4d400021, "bdztlrl", {{16,5,BCND}} },
  155.  { 0x4c400020, "bdzflr",  {{16,5,BCND}} },
  156.  { 0x4c400021, "bdzflrl", {{16,5,BCND}} },
  157.  
  158.  { 0x4e800420, "bctr",    },
  159.  { 0x4e800421, "bctrl",   },
  160.  { 0x4d800420, "btctr",   {{16,5,BCND}} },
  161.  { 0x4d800421, "btctrl",  {{16,5,BCND}} },
  162.  { 0x4c800420, "bfctr",   {{16,5,BCND}} },
  163.  { 0x4c800421, "bfctrl",  {{16,5,BCND}} },
  164.  
  165. /* branch mnemonics incorporating conditions (assember extended mnemonics) */
  166.  { 0x41800000, "blt",     {{16,5,CRF}, {2,14,PCREL}} },
  167.  { 0x41800000, "blt",     {{2,14,PCREL}} },
  168.  { 0x41800001, "bltl",    {{16,5,CRF}, {2,14,PCREL}} },
  169.  { 0x41800001, "bltl",    {{2,14,PCREL}} },
  170.  { 0x40810000, "ble",     {{16,5,CRF}, {2,14,PCREL}} },
  171.  { 0x40810000, "ble",     {{2,14,PCREL}} },
  172.  { 0x40810001, "blel",    {{16,5,CRF}, {2,14,PCREL}} },
  173.  { 0x40810001, "blel",    {{2,14,PCREL}} },
  174.  { 0x41820000, "beq",     {{16,5,CRF}, {2,14,PCREL}} },
  175.  { 0x41820000, "beq",     {{2,14,PCREL}} },
  176.  { 0x41820001, "beql",    {{16,5,CRF}, {2,14,PCREL}} },
  177.  { 0x41820001, "beql",    {{2,14,PCREL}} },
  178.  { 0x40800000, "bge",     {{16,5,CRF}, {2,14,PCREL}} },
  179.  { 0x40800000, "bge",     {{2,14,PCREL}} },
  180.  { 0x40800001, "bgel",    {{16,5,CRF}, {2,14,PCREL}} },
  181.  { 0x40800001, "bgel",    {{2,14,PCREL}} },
  182.  { 0x41810000, "bgt",     {{16,5,CRF}, {2,14,PCREL}} },
  183.  { 0x41810000, "bgt",     {{2,14,PCREL}} },
  184.  { 0x41810001, "bgtl",    {{16,5,CRF}, {2,14,PCREL}} },
  185.  { 0x41810001, "bgtl",    {{2,14,PCREL}} },
  186.  { 0x40800000, "bnl",     {{16,5,CRF}, {2,14,PCREL}} },
  187.  { 0x40800000, "bnl",     {{2,14,PCREL}} },
  188.  { 0x40800001, "bnll",    {{16,5,CRF}, {2,14,PCREL}} },
  189.  { 0x40800001, "bnll",    {{2,14,PCREL}} },
  190.  { 0x40820000, "bne",     {{16,5,CRF}, {2,14,PCREL}} },
  191.  { 0x40820000, "bne",     {{2,14,PCREL}} },
  192.  { 0x40820001, "bnel",    {{16,5,CRF}, {2,14,PCREL}} },
  193.  { 0x40820001, "bnel",    {{2,14,PCREL}} },
  194.  { 0x40810000, "bng",     {{16,5,CRF}, {2,14,PCREL}} },
  195.  { 0x40810000, "bng",     {{2,14,PCREL}} },
  196.  { 0x40810001, "bngl",    {{16,5,CRF}, {2,14,PCREL}} },
  197.  { 0x40810001, "bngl",    {{2,14,PCREL}} },
  198.  { 0x41830000, "bso",     {{16,5,CRF}, {2,14,PCREL}} },
  199.  { 0x41830000, "bso",     {{2,14,PCREL}} },
  200.  { 0x41830001, "bsol",    {{16,5,CRF}, {2,14,PCREL}} },
  201.  { 0x41830001, "bsol",    {{2,14,PCREL}} },
  202.  { 0x40830000, "bns",     {{16,5,CRF}, {2,14,PCREL}} },
  203.  { 0x40830000, "bns",     {{2,14,PCREL}} },
  204.  { 0x40830001, "bnsl",    {{16,5,CRF}, {2,14,PCREL}} },
  205.  { 0x40830001, "bnsl",    {{2,14,PCREL}} },
  206.  { 0x41830000, "bun",     {{16,5,CRF}, {2,14,PCREL}} },
  207.  { 0x41830000, "bun",     {{2,14,PCREL}} },
  208.  { 0x41830001, "bunl",    {{16,5,CRF}, {2,14,PCREL}} },
  209.  { 0x41830001, "bunl",    {{2,14,PCREL}} },
  210.  { 0x40830000, "bnu",     {{16,5,CRF}, {2,14,PCREL}} },
  211.  { 0x40830000, "bnu",     {{2,14,PCREL}} },
  212.  { 0x40830001, "bnul",    {{16,5,CRF}, {2,14,PCREL}} },
  213.  { 0x40830001, "bnul",    {{2,14,PCREL}} },
  214.  
  215.  { 0x41800002, "blta",    {{16,5,CRF}, {2,14,BADDR}} },
  216.  { 0x41800002, "blta",    {{2,14,BADDR}} },
  217.  { 0x41800003, "bltla",   {{16,5,CRF}, {2,14,BADDR}} },
  218.  { 0x41800003, "bltla",   {{2,14,BADDR}} },
  219.  { 0x40810002, "blea",    {{16,5,CRF}, {2,14,BADDR}} },
  220.  { 0x40810002, "blea",    {{2,14,BADDR}} },
  221.  { 0x40810003, "blela",   {{16,5,CRF}, {2,14,BADDR}} },
  222.  { 0x40810003, "blela",   {{2,14,BADDR}} },
  223.  { 0x41820002, "beqa",    {{16,5,CRF}, {2,14,BADDR}} },
  224.  { 0x41820002, "beqa",    {{2,14,BADDR}} },
  225.  { 0x41820003, "beqla",   {{16,5,CRF}, {2,14,BADDR}} },
  226.  { 0x41820003, "beqla",   {{2,14,BADDR}} },
  227.  { 0x40800002, "bgea",    {{16,5,CRF}, {2,14,BADDR}} },
  228.  { 0x40800002, "bgea",    {{2,14,BADDR}} },
  229.  { 0x40800003, "bgela",   {{16,5,CRF}, {2,14,BADDR}} },
  230.  { 0x40800003, "bgela",   {{2,14,BADDR}} },
  231.  { 0x41810002, "bgta",    {{16,5,CRF}, {2,14,BADDR}} },
  232.  { 0x41810002, "bgta",    {{2,14,BADDR}} },
  233.  { 0x41810003, "bgtla",   {{16,5,CRF}, {2,14,BADDR}} },
  234.  { 0x41810003, "bgtla",   {{2,14,BADDR}} },
  235.  { 0x40800002, "bnla",    {{16,5,CRF}, {2,14,BADDR}} },
  236.  { 0x40800002, "bnla",    {{2,14,BADDR}} },
  237.  { 0x40800003, "bnlla",   {{16,5,CRF}, {2,14,BADDR}} },
  238.  { 0x40800003, "bnlla",   {{2,14,BADDR}} },
  239.  { 0x40820002, "bnea",    {{16,5,CRF}, {2,14,BADDR}} },
  240.  { 0x40820002, "bnea",    {{2,14,BADDR}} },
  241.  { 0x40820003, "bnela",   {{16,5,CRF}, {2,14,BADDR}} },
  242.  { 0x40820003, "bnela",   {{2,14,BADDR}} },
  243.  { 0x40810002, "bnga",    {{16,5,CRF}, {2,14,BADDR}} },
  244.  { 0x40810002, "bnga",    {{2,14,BADDR}} },
  245.  { 0x40810003, "bngla",   {{16,5,CRF}, {2,14,BADDR}} },
  246.  { 0x40810003, "bngla",   {{2,14,BADDR}} },
  247.  { 0x41830002, "bsoa",    {{16,5,CRF}, {2,14,BADDR}} },
  248.  { 0x41830002, "bsoa",    {{2,14,BADDR}} },
  249.  { 0x41830003, "bsola",   {{16,5,CRF}, {2,14,BADDR}} },
  250.  { 0x41830003, "bsola",   {{2,14,BADDR}} },
  251.  { 0x40830002, "bnsa",    {{16,5,CRF}, {2,14,BADDR}} },
  252.  { 0x40830002, "bnsa",    {{2,14,BADDR}} },
  253.  { 0x40830003, "bnsla",   {{16,5,CRF}, {2,14,BADDR}} },
  254.  { 0x40830003, "bnsla",   {{2,14,BADDR}} },
  255.  { 0x41830002, "buna",    {{16,5,CRF}, {2,14,BADDR}} },
  256.  { 0x41830002, "buna",    {{2,14,BADDR}} },
  257.  { 0x41830003, "bunla",   {{16,5,CRF}, {2,14,BADDR}} },
  258.  { 0x41830003, "bunla",   {{2,14,BADDR}} },
  259.  { 0x40830002, "bnua",    {{16,5,CRF}, {2,14,BADDR}} },
  260.  { 0x40830002, "bnua",    {{2,14,BADDR}} },
  261.  { 0x40830003, "bnula",   {{16,5,CRF}, {2,14,BADDR}} },
  262.  { 0x40830003, "bnula",   {{2,14,BADDR}} },
  263.  
  264.  { 0x4d800020, "bltlr",   {{16,5,CRF}} },
  265.  { 0x4d800020, "bltlr",   },
  266.  { 0x4d800021, "bltlrl",  {{16,5,CRF}} },
  267.  { 0x4d800021, "bltlrl",  },
  268.  { 0x4c810020, "blelr",   {{16,5,CRF}} },
  269.  { 0x4c810020, "blelr",   },
  270.  { 0x4c810021, "blelrl",  {{16,5,CRF}} },
  271.  { 0x4c810021, "blelrl",  },
  272.  { 0x4d820020, "beqlr",   {{16,5,CRF}} },
  273.  { 0x4d820020, "beqlr",   },
  274.  { 0x4d820021, "beqlrl",  {{16,5,CRF}} },
  275.  { 0x4d820021, "beqlrl",  },
  276.  { 0x4c800020, "bgelr",   {{16,5,CRF}} },
  277.  { 0x4c800020, "bgelr",   },
  278.  { 0x4c800021, "bgelrl",  {{16,5,CRF}} },
  279.  { 0x4c800021, "bgelrl",  },
  280.  { 0x4d810020, "bgtlr",   {{16,5,CRF}} },
  281.  { 0x4d810020, "bgtlr",   },
  282.  { 0x4d810021, "bgtlrl",  {{16,5,CRF}} },
  283.  { 0x4d810021, "bgtlrl",  },
  284.  { 0x4c800020, "bnllr",   {{16,5,CRF}} },
  285.  { 0x4c800020, "bnllr",   },
  286.  { 0x4c800021, "bnllrl",  {{16,5,CRF}} },
  287.  { 0x4c800021, "bnllrl",  },
  288.  { 0x4c820020, "bnelr",   {{16,5,CRF}} },
  289.  { 0x4c820020, "bnelr",   },
  290.  { 0x4c820021, "bnelrl",  {{16,5,CRF}} },
  291.  { 0x4c820021, "bnelrl",  },
  292.  { 0x4c810020, "bnglr",   {{16,5,CRF}} },
  293.  { 0x4c810020, "bnglr",   },
  294.  { 0x4c810021, "bnglrl",  {{16,5,CRF}} },
  295.  { 0x4c810021, "bnglrl",  },
  296.  { 0x4d830020, "bsolr",   {{16,5,CRF}} },
  297.  { 0x4d830020, "bsolr",   },
  298.  { 0x4d830021, "bsolrl",  {{16,5,CRF}} },
  299.  { 0x4d830021, "bsolrl",  },
  300.  { 0x4c830020, "bnslr",   {{16,5,CRF}} },
  301.  { 0x4c830020, "bnslr",   },
  302.  { 0x4c830021, "bnslrl",  {{16,5,CRF}} },
  303.  { 0x4c830021, "bnslrl",  },
  304.  { 0x4d830020, "bunlr",   {{16,5,CRF}} },
  305.  { 0x4d830020, "bunlr",   },
  306.  { 0x4d830021, "bunlrl",  {{16,5,CRF}} },
  307.  { 0x4d830021, "bunlrl",  },
  308.  { 0x4c830020, "bnulr",   {{16,5,CRF}} },
  309.  { 0x4c830020, "bnulr",   },
  310.  { 0x4c830021, "bnulrl",  {{16,5,CRF}} },
  311.  { 0x4c830021, "bnulrl",  },
  312.  
  313.  { 0x4d800420, "bltctr",  {{16,5,CRF}} },
  314.  { 0x4d800420, "bltctr",  },
  315.  { 0x4d800421, "bltctrl", {{16,5,CRF}} },
  316.  { 0x4d800421, "bltctrl", },
  317.  { 0x4c810420, "blectr",  {{16,5,CRF}} },
  318.  { 0x4c810420, "blectr",  },
  319.  { 0x4c810421, "blectrl", {{16,5,CRF}} },
  320.  { 0x4c810421, "blectrl", },
  321.  { 0x4d820420, "beqctr",  {{16,5,CRF}} },
  322.  { 0x4d820420, "beqctr",  },
  323.  { 0x4d820421, "beqctrl", {{16,5,CRF}} },
  324.  { 0x4d820421, "beqctrl", },
  325.  { 0x4c800420, "bgectr",  {{16,5,CRF}} },
  326.  { 0x4c800420, "bgectr",  },
  327.  { 0x4c800421, "bgectrl", {{16,5,CRF}} },
  328.  { 0x4c800421, "bgectrl", },
  329.  { 0x4d810420, "bgtctr",  {{16,5,CRF}} },
  330.  { 0x4d810420, "bgtctr",  },
  331.  { 0x4d810421, "bgtctrl", {{16,5,CRF}} },
  332.  { 0x4d810421, "bgtctrl", },
  333.  { 0x4c800420, "bnlctr",  {{16,5,CRF}} },
  334.  { 0x4c800420, "bnlctr",  },
  335.  { 0x4c800421, "bnlctrl", {{16,5,CRF}} },
  336.  { 0x4c800421, "bnlctrl", },
  337.  { 0x4c820420, "bnectr",  {{16,5,CRF}} },
  338.  { 0x4c820420, "bnectr",  },
  339.  { 0x4c820421, "bnectrl", {{16,5,CRF}} },
  340.  { 0x4c820421, "bnectrl", },
  341.  { 0x4c810420, "bngctr",  {{16,5,CRF}} },
  342.  { 0x4c810420, "bngctr",  },
  343.  { 0x4c810421, "bngctrl", {{16,5,CRF}} },
  344.  { 0x4c810421, "bngctrl", },
  345.  { 0x4d830420, "bsoctr",  {{16,5,CRF}} },
  346.  { 0x4d830420, "bsoctr",  },
  347.  { 0x4d830421, "bsoctrl", {{16,5,CRF}} },
  348.  { 0x4d830421, "bsoctrl", },
  349.  { 0x4c830420, "bnsctr",  {{16,5,CRF}} },
  350.  { 0x4c830420, "bnsctr",  },
  351.  { 0x4c830421, "bnsctrl", {{16,5,CRF}} },
  352.  { 0x4c830421, "bnsctrl", },
  353.  { 0x4d830420, "bunctr",  {{16,5,CRF}} },
  354.  { 0x4d830420, "bunctr",  },
  355.  { 0x4d830421, "bunctrl", {{16,5,CRF}} },
  356.  { 0x4d830421, "bunctrl", },
  357.  { 0x4c830420, "bnuctr",  {{16,5,CRF}} },
  358.  { 0x4c830420, "bnuctr",  },
  359.  { 0x4c830421, "bnuctrl", {{16,5,CRF}} },
  360.  { 0x4c830421, "bnuctrl", },
  361.  
  362.  { 0x2c000000, "cmpi",
  363.     {{21,5,CRFONLY},{21,1,NUM},  {16,5,GREG}, {0,16,SI}} },
  364.  { 0x2c000000, "cmpi",
  365.     {{23,3,NUM},    {21,1,NUM},  {16,5,GREG}, {0,16,SI}} },
  366.  { 0x2c000000, "cmpwi",   {{16,5,GREG},   {0,16,SI}} },
  367.  { 0x2c000000, "cmpwi",   {{21,5,CRFONLY},{16,5,GREG}, {0,16,SI}} },
  368.  { 0x2c200000, "cmpdi",   {{16,5,GREG},   {0,16,SI}} },
  369.  { 0x2c200000, "cmpdi",   {{21,5,CRFONLY},{16,5,GREG}, {0,16,SI}} },
  370.  
  371.  { 0x7c000000, "cmp",    
  372.     {{21,5,CRFONLY},{21,1,NUM}, {16,5,GREG}, {11,5,GREG}} },
  373.  { 0x7c000000, "cmp",    
  374.     {{23,3,NUM},    {21,1,NUM}, {16,5,GREG}, {11,5,GREG}} },
  375.  { 0x7c000000, "cmpw",    {{16,5,GREG},   {11,5,GREG}} },
  376.  { 0x7c000000, "cmpw",    {{21,5,CRFONLY},{16,5,GREG}, {11,5,GREG}} },
  377.  { 0x7c200000, "cmpd",    {{16,5,GREG},   {11,5,GREG}} },
  378.  { 0x7c200000, "cmpd",    {{21,5,CRFONLY},{16,5,GREG}, {11,5,GREG}} },
  379.  
  380.  { 0x28000000, "cmpli",
  381.     {{21,5,CRFONLY},{21,1,NUM},  {16,5,GREG}, {0,16,SI}} },
  382.  { 0x28000000, "cmpli",
  383.     {{23,3,NUM},    {21,1,NUM},  {16,5,GREG}, {0,16,SI}} },
  384.  { 0x28000000, "cmplwi",  {{16,5,GREG},   {0,16,SI}} },
  385.  { 0x28000000, "cmplwi",  {{21,5,CRFONLY},{16,5,GREG}, {0,16,SI}} },
  386.  { 0x28200000, "cmpldi",  {{16,5,GREG},   {0,16,SI}} },
  387.  { 0x28200000, "cmpldi",  {{21,5,CRFONLY},{16,5,GREG}, {0,16,SI}} },
  388.  
  389.  { 0x7c000040, "cmpl",    
  390.     {{21,5,CRFONLY},{21,1,NUM}, {16,5,GREG}, {11,5,GREG}} },
  391.  { 0x7c000040, "cmpl",    
  392.     {{23,3,NUM},    {21,1,NUM}, {16,5,GREG}, {11,5,GREG}} },
  393.  { 0x7c000040, "cmplw",   {{16,5,GREG},   {11,5,GREG}} },
  394.  { 0x7c000040, "cmplw",   {{21,5,CRFONLY},{16,5,GREG}, {11,5,GREG}} },
  395.  { 0x7c200040, "cmpld",   {{16,5,GREG},   {11,5,GREG}} },
  396.  { 0x7c200040, "cmpld",   {{21,5,CRFONLY},{16,5,GREG}, {11,5,GREG}} },
  397.  
  398.  { 0x7c000034, "cntlzw",  {{16,5,GREG}, {21,5,GREG}} },
  399.  { 0x7c000035, "cntlzw.", {{16,5,GREG}, {21,5,GREG}} },
  400.  { 0x7c000074, "cntlzd",  {{16,5,GREG}, {21,5,GREG}} },
  401.  { 0x7c000075, "cntlzd.", {{16,5,GREG}, {21,5,GREG}} },
  402.  
  403.  { 0x4c000202, "crand",   {{21,5,NUM},  {16,5,NUM},  {11,5,NUM}} },
  404.  { 0x4c000102, "crandc",  {{21,5,NUM},  {16,5,NUM},  {11,5,NUM}} },
  405.  { 0x4c000242, "creqv",   {{21,5,NUM},  {16,5,NUM},  {11,5,NUM}} },
  406.  { 0x4c0001c2, "crnand",  {{21,5,NUM},  {16,5,NUM},  {11,5,NUM}} },
  407.  { 0x4c000042, "crnor",   {{21,5,NUM},  {16,5,NUM},  {11,5,NUM}} },
  408.  { 0x4c000382, "cror",    {{21,5,NUM},  {16,5,NUM},  {11,5,NUM}} },
  409.  { 0x4c000342, "crorc",   {{21,5,NUM},  {16,5,NUM},  {11,5,NUM}} },
  410.  { 0x4c000182, "crxor",   {{21,5,NUM},  {16,5,NUM},  {11,5,NUM}} },
  411.  
  412.  { 0x7c0003d2, "divd",    {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  413.  { 0x7c0003d3, "divd.",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  414.  { 0x7c0007d2, "divdo",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  415.  { 0x7c0007d3, "divdo.",  {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  416.  
  417.  { 0x7c000392, "divdu",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  418.  { 0x7c000393, "divdu.",  {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  419.  { 0x7c000792, "divduo",  {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  420.  { 0x7c000793, "divduo.", {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  421.  
  422.  { 0x7c0003d6, "divw",    {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  423.  { 0x7c0003d7, "divw.",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  424.  { 0x7c0007d6, "divwo",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  425.  { 0x7c0007d7, "divwo.",  {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  426.  
  427.  { 0x7c000396, "divwu",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  428.  { 0x7c000397, "divwu.",  {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  429.  { 0x7c000796, "divwuo",  {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  430.  { 0x7c000797, "divwuo.", {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  431.  
  432.  { 0x7c000238, "eqv",     {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  433.  { 0x7c000239, "eqv.",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  434.  
  435.  { 0x7c000774, "extsb",   {{16,5,GREG}, {21,5,GREG}} },
  436.  { 0x7c000775, "extsb.",  {{16,5,GREG}, {21,5,GREG}} },
  437.  { 0x7c000734, "extsh",   {{16,5,GREG}, {21,5,GREG}} },
  438.  { 0x7c000735, "extsh.",  {{16,5,GREG}, {21,5,GREG}} },
  439.  { 0x7c0007b4, "extsw",   {{16,5,GREG}, {21,5,GREG}} },
  440.  { 0x7c0007b5, "extsw.",  {{16,5,GREG}, {21,5,GREG}} },
  441.  
  442.  { 0xfc00002a, "fadd",    {{21,5,FREG}, {16,5,FREG}, {11,5,FREG}} },
  443.  { 0xfc00002b, "fadd.",   {{21,5,FREG}, {16,5,FREG}, {11,5,FREG}} },
  444.  { 0xec00002a, "fadds",   {{21,5,FREG}, {16,5,FREG}, {11,5,FREG}} },
  445.  { 0xec00002b, "fadds.",  {{21,5,FREG}, {16,5,FREG}, {11,5,FREG}} },
  446.  { 0xfc000028, "fsub",    {{21,5,FREG}, {16,5,FREG}, {11,5,FREG}} },
  447.  { 0xfc000029, "fsub.",   {{21,5,FREG}, {16,5,FREG}, {11,5,FREG}} },
  448.  { 0xec000028, "fsubs",   {{21,5,FREG}, {16,5,FREG}, {11,5,FREG}} },
  449.  { 0xec000029, "fsubs.",  {{21,5,FREG}, {16,5,FREG}, {11,5,FREG}} },
  450.  { 0xfc000032, "fmul",    {{21,5,FREG}, {16,5,FREG}, {6,5,FREG}}  },
  451.  { 0xfc000033, "fmul.",   {{21,5,FREG}, {16,5,FREG}, {6,5,FREG}}  },
  452.  { 0xec000032, "fmuls",   {{21,5,FREG}, {16,5,FREG}, {6,5,FREG}}  },
  453.  { 0xec000033, "fmuls.",  {{21,5,FREG}, {16,5,FREG}, {6,5,FREG}}  },
  454.  { 0xfc000024, "fdiv",    {{21,5,FREG}, {16,5,FREG}, {11,5,FREG}} },
  455.  { 0xfc000025, "fdiv.",   {{21,5,FREG}, {16,5,FREG}, {11,5,FREG}} },
  456.  { 0xec000024, "fdivs",   {{21,5,FREG}, {16,5,FREG}, {11,5,FREG}} },
  457.  { 0xec000025, "fdivs.",  {{21,5,FREG}, {16,5,FREG}, {11,5,FREG}} },
  458.  
  459.  { 0xfc00003a, "fmadd",
  460.     {{21,5,FREG}, {16,5,FREG}, {6,5,FREG}, {11,5,FREG}} },
  461.  { 0xfc00003b, "fmadd.",
  462.     {{21,5,FREG}, {16,5,FREG}, {6,5,FREG}, {11,5,FREG}} },
  463.  { 0xec00003a, "fmadds",
  464.     {{21,5,FREG}, {16,5,FREG}, {6,5,FREG}, {11,5,FREG}} },
  465.  { 0xec00003b, "fmadds.",
  466.     {{21,5,FREG}, {16,5,FREG}, {6,5,FREG}, {11,5,FREG}} },
  467.  { 0xfc000038, "fmsub",
  468.     {{21,5,FREG}, {16,5,FREG}, {6,5,FREG}, {11,5,FREG}} },
  469.  { 0xfc000039, "fmsub.",
  470.     {{21,5,FREG}, {16,5,FREG}, {6,5,FREG}, {11,5,FREG}} },
  471.  { 0xec000038, "fmsubs",
  472.     {{21,5,FREG}, {16,5,FREG}, {6,5,FREG}, {11,5,FREG}} },
  473.  { 0xec000039, "fmsubs.",
  474.     {{21,5,FREG}, {16,5,FREG}, {6,5,FREG}, {11,5,FREG}} },
  475.  { 0xfc00003e, "fnmadd",
  476.     {{21,5,FREG}, {16,5,FREG}, {6,5,FREG}, {11,5,FREG}} },
  477.  { 0xfc00003f, "fnmadd.",
  478.     {{21,5,FREG}, {16,5,FREG}, {6,5,FREG}, {11,5,FREG}} },
  479.  { 0xec00003e, "fnmadds",
  480.     {{21,5,FREG}, {16,5,FREG}, {6,5,FREG}, {11,5,FREG}} },
  481.  { 0xec00003f, "fnmadds.",
  482.     {{21,5,FREG}, {16,5,FREG}, {6,5,FREG}, {11,5,FREG}} },
  483.  { 0xfc00003c, "fnmsub",
  484.     {{21,5,FREG}, {16,5,FREG}, {6,5,FREG}, {11,5,FREG}} },
  485.  { 0xfc00003d, "fnmsub.",
  486.     {{21,5,FREG}, {16,5,FREG}, {6,5,FREG}, {11,5,FREG}} },
  487.  { 0xec00003c, "fnmsubs",
  488.     {{21,5,FREG}, {16,5,FREG}, {6,5,FREG}, {11,5,FREG}} },
  489.  { 0xec00003d, "fnmsubs.",
  490.     {{21,5,FREG}, {16,5,FREG}, {6,5,FREG}, {11,5,FREG}} },
  491.  
  492.  { 0xfc000090, "fmr",     {{21,5,FREG}, {11,5,FREG}} },
  493.  { 0xfc000091, "fmr.",    {{21,5,FREG}, {11,5,FREG}} },
  494.  { 0xfc000210, "fabs",    {{21,5,FREG}, {11,5,FREG}} },
  495.  { 0xfc000211, "fabs.",   {{21,5,FREG}, {11,5,FREG}} },
  496.  { 0xfc000050, "fneg",    {{21,5,FREG}, {11,5,FREG}} },
  497.  { 0xfc000051, "fneg.",   {{21,5,FREG}, {11,5,FREG}} },
  498.  { 0xfc000110, "fnabs",   {{21,5,FREG}, {11,5,FREG}} },
  499.  { 0xfc000111, "fnabs.",  {{21,5,FREG}, {11,5,FREG}} },
  500.  { 0xfc000018, "frsp",    {{21,5,FREG}, {11,5,FREG}} },
  501.  { 0xfc000019, "frsp.",   {{21,5,FREG}, {11,5,FREG}} },
  502.  { 0xfc00065c, "fctid",   {{21,5,FREG}, {11,5,FREG}} },
  503.  { 0xfc00065d, "fctid.",  {{21,5,FREG}, {11,5,FREG}} },
  504.  { 0xfc00065e, "fctidz",  {{21,5,FREG}, {11,5,FREG}} },
  505.  { 0xfc00065f, "fctidz.", {{21,5,FREG}, {11,5,FREG}} },
  506.  { 0xfc00001c, "fctiw",   {{21,5,FREG}, {11,5,FREG}} },
  507.  { 0xfc00001d, "fctiw.",  {{21,5,FREG}, {11,5,FREG}} },
  508.  { 0xfc00001e, "fctiwz",  {{21,5,FREG}, {11,5,FREG}} },
  509.  { 0xfc00001f, "fctiwz.", {{21,5,FREG}, {11,5,FREG}} },
  510.  { 0xfc00069c, "fcfid",   {{21,5,FREG}, {11,5,FREG}} },
  511.  { 0xfc00069d, "fcfid.",  {{21,5,FREG}, {11,5,FREG}} },
  512.  
  513.  { 0xfc000000, "fcmpu",   {{21,5,CRFONLY},{16,5,FREG}, {11,5,FREG}} },
  514.  { 0xfc000000, "fcmpu",   {{23,3,NUM},  {16,5,FREG}, {11,5,FREG}} },
  515.  { 0xfc000040, "fcmpo",   {{21,5,CRFONLY},{16,5,FREG}, {11,5,FREG}} },
  516.  { 0xfc000040, "fcmpo",   {{23,3,NUM},  {16,5,FREG}, {11,5,FREG}} },
  517.  { 0xfc00048e, "mffs",    {{21,5,FREG}} },
  518.  { 0xfc00048f, "mffs.",   {{21,5,FREG}} },
  519.  { 0xfc000080, "mcrfs",   {{23,3,NUM},  {18,5,NUM}} },
  520.  { 0xfc00010c, "mtfsfi",  {{23,3,NUM},  {12,4,NUM}} },
  521.  { 0xfc00010d, "mtfsfi.", {{23,3,NUM},  {12,4,NUM}} },
  522.  { 0xfc00058e, "mtfsf",   {{17,8,NUM},  {11,5,FREG}} },
  523.  { 0xfc00058f, "mtfsf.",  {{17,8,NUM},  {11,5,FREG}} },
  524.  { 0xfc00008c, "mtfsb0",  {{21,5,NUM}} },
  525.  { 0xfc00008d, "mtfsb0.", {{21,5,NUM}} },
  526.  { 0xfc00004c, "mtfsb1",  {{21,5,NUM}} },
  527.  { 0xfc00004d, "mtfsb1.", {{21,5,NUM}} },
  528.  
  529.  { 0x88000000, "lbz",     {{21,5,GREG}, {0,16,D},     {16,5,G0REG}} },
  530.  { 0x7c0000ae, "lbzx",    {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  531.  { 0x8c000000, "lbzu",    {{21,5,GREG}, {0,16,D},     {16,5,G0REG}} },
  532.  { 0x7c0000ee, "lbzux",   {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  533.  { 0xa0000000, "lhz",     {{21,5,GREG}, {0,16,D},     {16,5,G0REG}} },
  534.  { 0x7c00022e, "lhzx",    {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  535.  { 0xa4000000, "lhzu",    {{21,5,GREG}, {0,16,D},     {16,5,G0REG}} },
  536.  { 0x7c00026e, "lhzux",   {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  537.  { 0xa8000000, "lha",     {{21,5,GREG}, {0,16,D},     {16,5,G0REG}} },
  538.  { 0x7c0002ae, "lhax",    {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  539.  { 0xac000000, "lhau",    {{21,5,GREG}, {0,16,D},     {16,5,G0REG}} },
  540.  { 0x7c0002ee, "lhaux",   {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  541.  { 0x80000000, "lwz",     {{21,5,GREG}, {0,16,D},     {16,5,G0REG}} },
  542.  { 0x7c00002e, "lwzx",    {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  543.  { 0x84000000, "lwzu",    {{21,5,GREG}, {0,16,D},     {16,5,G0REG}} },
  544.  { 0x7c00006e, "lwzux",   {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  545.  { 0xe8000002, "lwa",     {{21,5,GREG}, {2,14,DS},    {16,5,G0REG}} },
  546.  { 0x7c0002aa, "lwax",    {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  547.  { 0x7c0002ea, "lwaux",   {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  548.  { 0xe8000000, "ld",      {{21,5,GREG}, {2,14,DS},    {16,5,G0REG}} },
  549.  { 0x7c00002a, "ldx",     {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  550.  { 0xe8000001, "ldu",     {{21,5,GREG}, {2,14,DS},    {16,5,G0REG}} },
  551.  { 0x7c00006a, "ldux",    {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  552.  
  553.  { 0xb8000000, "lmw",     {{21,5,GREG}, {0,16,D},     {16,5,G0REG}} },
  554.  { 0xe8000003, "lmd",     {{21,5,GREG}, {2,14,DS},    {16,5,G0REG}} },
  555.  { 0xbc000000, "stmw",    {{21,5,GREG}, {0,16,D},     {16,5,G0REG}} },
  556.  { 0xf8000003, "stmd",    {{21,5,GREG}, {2,14,DS},    {16,5,G0REG}} },
  557.  
  558.  { 0x7c00062c, "lhbrx",   {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  559.  { 0x7c00042c, "lwbrx",   {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  560.  { 0x7c00042a, "lswx",    {{21,5,GREG}, {16,5,G0REG}, {11,5,GREG}} },
  561.  { 0x7c000028, "lwarx",   {{21,5,GREG}, {16,5,G0REG}, {11,5,GREG}} },
  562.  { 0x7c0000a8, "ldarx",   {{21,5,GREG}, {16,5,G0REG}, {11,5,GREG}} },
  563.  
  564.  { 0x7c00022a, "lscbx",   {{21,5,GREG}, {16,5,G0REG}, {11,5,GREG}} },
  565.  { 0x7c00022b, "lscbx.",  {{21,5,GREG}, {16,5,G0REG}, {11,5,GREG}} },
  566.  
  567.  { 0x7c0004aa, "lswi",    {{21,5,GREG}, {16,5,G0REG}, {11,5,NUM}} },
  568.  
  569.  { 0xc0000000, "lfs",     {{21,5,FREG}, {0,16,D},     {16,5,G0REG}} },
  570.  { 0xc4000000, "lfsu",    {{21,5,FREG}, {0,16,D},     {16,5,G0REG}} },
  571.  { 0x7c00042e, "lfsx",    {{21,5,FREG}, {16,5,GREG},  {11,5,GREG}} },
  572.  { 0x7c00046e, "lfsux",   {{21,5,FREG}, {16,5,GREG},  {11,5,GREG}} },
  573.  { 0xc8000000, "lfd",     {{21,5,FREG}, {0,16,D},     {16,5,G0REG}} },
  574.  { 0xcc000000, "lfdu",    {{21,5,FREG}, {0,16,D},     {16,5,G0REG}} },
  575.  { 0x7c0004ae, "lfdx",    {{21,5,FREG}, {16,5,GREG},  {11,5,GREG}} },
  576.  { 0x7c0004ee, "lfdux",   {{21,5,FREG}, {16,5,GREG},  {11,5,GREG}} },
  577.  
  578.  { 0x4c000000, "mcrf",    {{21,5,CRFONLY},{16,5,CRFONLY}} },
  579.  { 0x4c000000, "mcrf",    {{23,3,NUM},  {18,3,NUM}} },
  580.  
  581.  { 0x7c0002a6, "mfspr",   {{21,5,GREG}, {11,10,SPREG}} },
  582.  { 0x7c0003a6, "mtspr",   {{11,10,SPREG},{21,5,GREG}} },
  583.  { 0x7c000120, "mtcrf",   {{12,8,NUM},  {21,5,GREG}} },
  584.  { 0x7c000164, "mtpmr",   {{21,5,GREG}} },
  585.  { 0x7c000400, "mcrxr",   {{23,3,NUM}}  },
  586.  { 0x7c000026, "mfcr",    {{21,5,GREG}} },
  587.  { 0x7c0000e6, "mfpmr",   {{21,5,GREG}} },
  588.  
  589. /* Move to/from spr mnemonics (assember extended mnemonics) */
  590.  { 0x7c0102a6, "mfxer",   {{21,5,GREG}} },
  591.  { 0x7c0802a6, "mflr",    {{21,5,GREG}} },
  592.  { 0x7c0902a6, "mfctr",   {{21,5,GREG}} },
  593.  { 0x7c0103a6, "mtxer",   {{21,5,GREG}} },
  594.  { 0x7c0803a6, "mtlr",    {{21,5,GREG}} },
  595.  { 0x7c0903a6, "mtctr",   {{21,5,GREG}} },
  596.  
  597.  { 0x7c0001d6, "mull",    {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  598.  { 0x7c0001d7, "mull.",   {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  599.  { 0x7c0005d6, "mullo",   {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  600.  { 0x7c0005d7, "mullo.",  {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  601.  
  602.  { 0x7c000092, "mulhd",   {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  603.  { 0x7c000093, "mulhd.",  {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  604.  
  605.  { 0x7c000096, "mulwd",   {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  606.  { 0x7c000097, "mulwd.",  {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  607.  
  608.  { 0x7c000012, "mulhdu",  {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  609.  { 0x7c000013, "mulhdu.", {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  610.  
  611.  { 0x7c000016, "mulhwu",  {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  612.  { 0x7c000017, "mulhwu.", {{21,5,GREG}, {16,5,GREG},  {11,5,GREG}} },
  613.  
  614.  { 0x7c0003b8, "nand",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  615.  { 0x7c0003b9, "nand.",   {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  616.  
  617.  { 0x7c0000d0, "neg",     {{21,5,GREG}, {16,5,GREG}} },
  618.  { 0x7c0000d1, "neg.",    {{21,5,GREG}, {16,5,GREG}} },
  619.  { 0x7c0004d0, "nego",    {{21,5,GREG}, {16,5,GREG}} },
  620.  { 0x7c0004d1, "nego.",   {{21,5,GREG}, {16,5,GREG}} },
  621.  
  622.  { 0x7c0000f8, "nor",     {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  623.  { 0x7c0000f9, "nor.",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  624.  
  625. /* Miscellaneous mnemonics (assember extended mnemonics) */
  626.  { 0x60000000, "mr",      {{16,5,GREG}, {21,5,GREG}} },
  627.  { 0x60000000, "nop",     },
  628.  
  629.  { 0x60000000, "ori",     {{16,5,GREG}, {21,5,GREG}, {0,16,UI}} },
  630.  { 0x64000000, "oris",    {{16,5,GREG}, {21,5,GREG}, {0,16,UI}} },
  631.  { 0x7c000378, "or",      {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  632.  { 0x7c000379, "or.",     {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  633.  
  634.  { 0x7c000338, "orc",     {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  635.  { 0x7c000339, "orc.",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  636.  
  637.  { 0x78000000, "rldicl",
  638.     {{16,5,GREG}, {21,5,GREG}, {0,0,sh}, {0,0,mb}} },
  639.  { 0x78000001, "rldicl.",
  640.     {{16,5,GREG}, {21,5,GREG}, {0,0,sh}, {0,0,mb}} },
  641.  { 0x78000004, "rldicr",
  642.     {{16,5,GREG}, {21,5,GREG}, {0,0,sh}, {0,0,mb}} },
  643.  { 0x78000005, "rldicr.",
  644.     {{16,5,GREG}, {21,5,GREG}, {0,0,sh}, {0,0,mb}} },
  645.  { 0x78000008, "rldic",
  646.     {{16,5,GREG}, {21,5,GREG}, {0,0,sh}, {0,0,mb}} },
  647.  { 0x78000009, "rldic.",
  648.     {{16,5,GREG}, {21,5,GREG}, {0,0,sh}, {0,0,mb}} },
  649.  { 0x7800000c, "rldimi",
  650.     {{16,5,GREG}, {21,5,GREG}, {0,0,sh}, {0,0,mb}} },
  651.  { 0x7800000d, "rldimi.",
  652.     {{16,5,GREG}, {21,5,GREG}, {0,0,sh}, {0,0,mb}} },
  653.  { 0x78000010, "rldcl",
  654.     {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}, {0,0,mb}} },
  655.  { 0x78000011, "rldcl.",
  656.     {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}, {0,0,mb}} },
  657.  { 0x78000012, "rldcr",
  658.     {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}, {0,0,mb}} },
  659.  { 0x78000013, "rldcr.",
  660.     {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}, {0,0,mb}} },
  661.  
  662.  { 0x54000000, "rlwinm",
  663.     {{16,5,GREG}, {21,5,GREG}, {11,5,NUM0}, {6,5,NUM}, {1,5,NUM}} },
  664.  { 0x54000001, "rlwinm.",
  665.     {{16,5,GREG}, {21,5,GREG}, {11,5,NUM0}, {6,5,NUM}, {1,5,NUM}} },
  666.  { 0x5c000000, "rlwnm",
  667.     {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}, {6,5,NUM}, {1,5,NUM}} },
  668.  { 0x5c000001, "rlwnm.",
  669.     {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}, {6,5,NUM}, {1,5,NUM}} },
  670.  { 0x50000000, "rlwimi",
  671.     {{16,5,GREG}, {21,5,GREG}, {11,5,NUM0}, {6,5,NUM}, {1,5,NUM}} },
  672.  { 0x50000001, "rlwimi.",
  673.     {{16,5,GREG}, {21,5,GREG}, {11,5,NUM0}, {6,5,NUM}, {1,5,NUM}} },
  674.  
  675.  { 0x44000002, "sc", },
  676.  
  677.  { 0x7c000030, "slw",     {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  678.  { 0x7c000031, "slw.",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  679.  { 0x7c000036, "sld",     {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  680.  { 0x7c000037, "sld.",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  681.  
  682.  { 0x7c000430, "srw",     {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  683.  { 0x7c000431, "srw.",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  684.  { 0x7c000436, "srd",     {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  685.  { 0x7c000437, "srd.",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  686.  
  687.  { 0x7c000670, "srawi",   {{16,5,GREG}, {21,5,GREG}, {11,5,NUM}}  },
  688.  { 0x7c000671, "srawi.",  {{16,5,GREG}, {21,5,GREG}, {11,5,NUM}}  },
  689.  { 0x7c000674, "sradi",   {{16,5,GREG}, {21,5,GREG}, {0, 0,sh}}   },
  690.  { 0x7c000675, "sradi.",  {{16,5,GREG}, {21,5,GREG}, {0, 0,sh}}   },
  691.  
  692.  { 0x7c000630, "sraw",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  693.  { 0x7c000631, "sraw.",   {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  694.  { 0x7c000634, "srad",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  695.  { 0x7c000635, "srad.",   {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  696.  
  697.  { 0x98000000, "stb",     {{21,5,GREG}, {0,16,D},    {16,5,G0REG}} },
  698.  { 0x9c000000, "stbu",    {{21,5,GREG}, {0,16,D},    {16,5,G0REG}} },
  699.  { 0x7c0001ae, "stbx",    {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  700.  { 0x7c0001ee, "stbux",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  701.  { 0xb0000000, "sth",     {{21,5,GREG}, {0,16,D},    {16,5,G0REG}} },
  702.  { 0xb4000000, "sthu",    {{21,5,GREG}, {0,16,D},    {16,5,G0REG}} },
  703.  { 0x7c00032e, "sthx",    {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  704.  { 0x7c00036e, "sthux",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  705.  { 0x90000000, "stw",     {{21,5,GREG}, {0,16,D},    {16,5,G0REG}} },
  706.  { 0x94000000, "stwu",    {{21,5,GREG}, {0,16,D},    {16,5,G0REG}} },
  707.  { 0x7c00012e, "stwx",    {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  708.  { 0x7c00016e, "stwux",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  709.  { 0xf8000000, "std",     {{21,5,GREG}, {2,14,DS},   {16,5,G0REG}} },
  710.  { 0xf8000001, "stdu",    {{21,5,GREG}, {2,14,DS},   {16,5,G0REG}} },
  711.  { 0x7c00012a, "stdx",    {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  712.  { 0x7c00016a, "stdux",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  713.  
  714.  { 0x7c00072c, "sthbrx",  {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  715.  { 0x7c00052c, "stwbrx",  {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  716.  { 0x7c00052a, "stswx",   {{21,5,GREG}, {16,5,G0REG},{11,5,GREG}} },
  717.  { 0x7c00012d, "stwcx.",  {{21,5,GREG}, {16,5,G0REG},{11,5,GREG}} },
  718.  { 0x7c0001ad, "stdcx.",  {{21,5,GREG}, {16,5,G0REG},{11,5,GREG}} },
  719.  
  720.  { 0x7c0005aa, "stswi",   {{21,5,GREG}, {16,5,G0REG},{11,5,NUM}}  },
  721.  
  722.  { 0xd0000000, "stfs",    {{21,5,FREG}, {0,16,D},    {16,5,G0REG}} },
  723.  { 0xd4000000, "stfsu",   {{21,5,FREG}, {0,16,D},    {16,5,G0REG}} },
  724.  { 0x7c00052e, "stfsx",   {{21,5,FREG}, {16,5,GREG}, {11,5,GREG}} },
  725.  { 0x7c00056e, "stfsux",  {{21,5,FREG}, {16,5,GREG}, {11,5,GREG}} },
  726.  { 0xd8000000, "stfd",    {{21,5,FREG}, {0,16,D},    {16,5,G0REG}} },
  727.  { 0xdc000000, "stfdu",   {{21,5,FREG}, {0,16,D},    {16,5,G0REG}} },
  728.  { 0x7c0005ae, "stfdx",   {{21,5,FREG}, {16,5,GREG}, {11,5,GREG}} },
  729.  { 0x7c0005ee, "stfdux",  {{21,5,FREG}, {16,5,GREG}, {11,5,GREG}} },
  730.  
  731.  { 0x20000000, "subfic",  {{21,5,GREG}, {16,5,GREG}, {0,16,SI}} },
  732.  { 0x7c000050, "sub",     {{21,5,GREG}, {11,5,GREG}, {16,5,GREG}} },
  733.  { 0x7c000051, "sub.",    {{21,5,GREG}, {11,5,GREG}, {16,5,GREG}} },
  734.  { 0x7c000450, "subo",    {{21,5,GREG}, {11,5,GREG}, {16,5,GREG}} },
  735.  { 0x7c000451, "subo.",   {{21,5,GREG}, {11,5,GREG}, {16,5,GREG}} },
  736.  { 0x7c000050, "subf",    {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  737.  { 0x7c000051, "subf.",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  738.  { 0x7c000450, "subfo",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  739.  { 0x7c000451, "subfo.",  {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  740.  
  741.  { 0x7c000010, "subc",    {{21,5,GREG}, {11,5,GREG}, {16,5,GREG}} },
  742.  { 0x7c000011, "subc.",   {{21,5,GREG}, {11,5,GREG}, {16,5,GREG}} },
  743.  { 0x7c000410, "subco",   {{21,5,GREG}, {11,5,GREG}, {16,5,GREG}} },
  744.  { 0x7c000411, "subco.",  {{21,5,GREG}, {11,5,GREG}, {16,5,GREG}} },
  745.  { 0x7c000010, "subfc",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  746.  { 0x7c000011, "subfc.",  {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  747.  { 0x7c000410, "subfco",  {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  748.  { 0x7c000411, "subfco.", {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  749.  
  750.  { 0x7c000110, "subfe",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  751.  { 0x7c000111, "subfe.",  {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  752.  { 0x7c000510, "subfeo",  {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  753.  { 0x7c000511, "subfeo.", {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  754.  
  755.  { 0x7c0001d0, "subfme",  {{21,5,GREG}, {16,5,GREG}} },
  756.  { 0x7c0001d1, "subfme.", {{21,5,GREG}, {16,5,GREG}} },
  757.  { 0x7c0005d0, "subfmeo", {{21,5,GREG}, {16,5,GREG}} },
  758.  { 0x7c0005d1, "subfmeo.",{{21,5,GREG}, {16,5,GREG}} },
  759.  
  760.  { 0x7c000190, "subfze",  {{21,5,GREG}, {16,5,GREG}} },
  761.  { 0x7c000191, "subfze.", {{21,5,GREG}, {16,5,GREG}} },
  762.  { 0x7c000590, "subfzeo", {{21,5,GREG}, {16,5,GREG}} },
  763.  { 0x7c000591, "subfzeo.",{{21,5,GREG}, {16,5,GREG}} },
  764.  
  765.  { 0x7c0004ac, "sync", },
  766.  
  767.  { 0x08000000, "tdi",     {{21,5,NUM},  {16,5,GREG}, {0,16,SI}} },
  768.  { 0x0a000000, "tdlti",   {{16,5,GREG}, {0,16,SI}} },
  769.  { 0x0a800000, "tdlei",   {{16,5,GREG}, {0,16,SI}} },
  770.  { 0x08800000, "tdeqi",   {{16,5,GREG}, {0,16,SI}} },
  771.  { 0x09800000, "tdgei",   {{16,5,GREG}, {0,16,SI}} },
  772.  { 0x09000000, "tdgti",   {{16,5,GREG}, {0,16,SI}} },
  773.  { 0x09800000, "tdnli",   {{16,5,GREG}, {0,16,SI}} },
  774.  { 0x0b000000, "tdnei",   {{16,5,GREG}, {0,16,SI}} },
  775.  { 0x0a800000, "tdngi",   {{16,5,GREG}, {0,16,SI}} },
  776.  { 0x08400000, "tdllti",  {{16,5,GREG}, {0,16,SI}} },
  777.  { 0x08c00000, "tdllei",  {{16,5,GREG}, {0,16,SI}} },
  778.  { 0x08a00000, "tdlgei",  {{16,5,GREG}, {0,16,SI}} },
  779.  { 0x08200000, "tdlgti",  {{16,5,GREG}, {0,16,SI}} },
  780.  { 0x08a00000, "tdlnli",  {{16,5,GREG}, {0,16,SI}} },
  781.  { 0x08c00000, "tdlngi",  {{16,5,GREG}, {0,16,SI}} },
  782.  
  783.  { 0x7c000088, "td",      {{21,5,NUM},  {16,5,GREG}, {11,5,GREG}} },
  784.  { 0x7e000088, "tdlt",    {{16,5,GREG}, {11,5,GREG}} },
  785.  { 0x7e800088, "tdle",    {{16,5,GREG}, {11,5,GREG}} },
  786.  { 0x7c800088, "tdeq",    {{16,5,GREG}, {11,5,GREG}} },
  787.  { 0x7d800088, "tdge",    {{16,5,GREG}, {11,5,GREG}} },
  788.  { 0x7d000088, "tdgt",    {{16,5,GREG}, {11,5,GREG}} },
  789.  { 0x7d800088, "tdnl",    {{16,5,GREG}, {11,5,GREG}} },
  790.  { 0x7f000088, "tdne",    {{16,5,GREG}, {11,5,GREG}} },
  791.  { 0x7e800088, "tdng",    {{16,5,GREG}, {11,5,GREG}} },
  792.  { 0x7c400088, "tdllt",   {{16,5,GREG}, {11,5,GREG}} },
  793.  { 0x7cc00088, "tdlle",   {{16,5,GREG}, {11,5,GREG}} },
  794.  { 0x7ca00088, "tdlge",   {{16,5,GREG}, {11,5,GREG}} },
  795.  { 0x7c200088, "tdlgt",   {{16,5,GREG}, {11,5,GREG}} },
  796.  { 0x7ca00088, "tdlnl",   {{16,5,GREG}, {11,5,GREG}} },
  797.  { 0x7cc00088, "tdlng",   {{16,5,GREG}, {11,5,GREG}} },
  798.  
  799.  { 0x0c000000, "twi",     {{21,5,NUM},  {16,5,GREG}, {0,16,SI}} },
  800.  { 0x0e000000, "twlti",   {{16,5,GREG}, {0,16,SI}} },
  801.  { 0x0e800000, "twlei",   {{16,5,GREG}, {0,16,SI}} },
  802.  { 0x0c800000, "tweqi",   {{16,5,GREG}, {0,16,SI}} },
  803.  { 0x0d800000, "twgei",   {{16,5,GREG}, {0,16,SI}} },
  804.  { 0x0d000000, "twgti",   {{16,5,GREG}, {0,16,SI}} },
  805.  { 0x0d800000, "twnli",   {{16,5,GREG}, {0,16,SI}} },
  806.  { 0x0f000000, "twnei",   {{16,5,GREG}, {0,16,SI}} },
  807.  { 0x0e800000, "twngi",   {{16,5,GREG}, {0,16,SI}} },
  808.  { 0x0c400000, "twllti",  {{16,5,GREG}, {0,16,SI}} },
  809.  { 0x0cc00000, "twllei",  {{16,5,GREG}, {0,16,SI}} },
  810.  { 0x0ca00000, "twlgei",  {{16,5,GREG}, {0,16,SI}} },
  811.  { 0x0c200000, "twlgti",  {{16,5,GREG}, {0,16,SI}} },
  812.  { 0x0ca00000, "twlnli",  {{16,5,GREG}, {0,16,SI}} },
  813.  { 0x0cc00000, "twlngi",  {{16,5,GREG}, {0,16,SI}} },
  814.  
  815.  { 0x7c000008, "tw",      {{21,5,NUM},  {16,5,GREG}, {11,5,GREG}} },
  816.  { 0x7e000008, "twlt",    {{16,5,GREG}, {11,5,GREG}} },
  817.  { 0x7e800008, "twle",    {{16,5,GREG}, {11,5,GREG}} },
  818.  { 0x7c800008, "tweq",    {{16,5,GREG}, {11,5,GREG}} },
  819.  { 0x7d800008, "twge",    {{16,5,GREG}, {11,5,GREG}} },
  820.  { 0x7d000008, "twgt",    {{16,5,GREG}, {11,5,GREG}} },
  821.  { 0x7d800008, "twnl",    {{16,5,GREG}, {11,5,GREG}} },
  822.  { 0x7f000008, "twne",    {{16,5,GREG}, {11,5,GREG}} },
  823.  { 0x7e800008, "twng",    {{16,5,GREG}, {11,5,GREG}} },
  824.  { 0x7c400008, "twllt",   {{16,5,GREG}, {11,5,GREG}} },
  825.  { 0x7cc00008, "twlle",   {{16,5,GREG}, {11,5,GREG}} },
  826.  { 0x7ca00008, "twlge",   {{16,5,GREG}, {11,5,GREG}} },
  827.  { 0x7c200008, "twlgt",   {{16,5,GREG}, {11,5,GREG}} },
  828.  { 0x7ca00008, "twlnl",   {{16,5,GREG}, {11,5,GREG}} },
  829.  { 0x7cc00008, "twlng",   {{16,5,GREG}, {11,5,GREG}} },
  830.  { 0x7fe00008, "trap",    },
  831.  
  832.  { 0x68000000, "xori",    {{16,5,GREG}, {21,5,GREG}, {0,16,UI}} },
  833.  { 0x6c000000, "xoris",   {{16,5,GREG}, {21,5,GREG}, {0,16,UI}} },
  834.  { 0x7c000278, "xor",     {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  835.  { 0x7c000279, "xor.",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  836.  
  837. /* Cache Management Instructions (from book II) */
  838.  { 0x7c0007ac, "icbi",    {{16,5,G0REG}, {11,5,GREG}} },
  839.  { 0x4c00012c, "isync",   },
  840.  { 0x7c00022c, "dcbt",    {{16,5,G0REG}, {11,5,GREG}} },
  841.  { 0x7c0001ec, "dcbtst",  {{16,5,G0REG}, {11,5,GREG}} },
  842.  { 0x7c0007ec, "dcbz",    {{16,5,G0REG}, {11,5,GREG}} },
  843.  { 0x7c00006c, "dcbst",   {{16,5,G0REG}, {11,5,GREG}} },
  844.  { 0x7c0000ac, "dcbf",    {{16,5,G0REG}, {11,5,GREG}} },
  845.  { 0x7c0006ac, "eieio",   },
  846. /* Instructions (from book III) */
  847.  { 0x4c000064, "rfi",     },
  848.  { 0x7c000124, "mtmsr",   {{21,5,GREG}} },
  849.  { 0x7c0000a6, "mfmsr",   {{21,5,GREG}} },
  850.  { 0x7c0003ac, "dcbi",    {{16,5,GREG}, {11,5,GREG}} },
  851.  { 0x7c0001a4, "mtsr",    {{16,4,SGREG},{21,5,GREG}} },
  852.  { 0x7c0004a6, "mfsr",    {{21,5,GREG},{16,4,SGREG}} },
  853.  { 0x7c0001e4, "mtsrin",  {{21,5,GREG}, {11,5,GREG}} },
  854.  { 0x7c000526, "mfsrin",  {{21,5,GREG}, {11,5,GREG}} },
  855.  { 0x7c000224, "slbie",   {{11,5,GREG}} },
  856. /* these two need values assigned for the XO field the book has them as NA
  857.  { 0x7c000000, "slbiex",  {{11,5,GREG}} },
  858.  { 0x7c000000, "slbia",   },
  859. */
  860.  { 0x7c000264, "tlbie",   {{11,5,GREG}} },
  861.  { 0x7c0002a4, "tlbiex",  {{11,5,GREG}} },
  862.  { 0x7c0002e4, "tlbia",   },
  863.  { 0x7c000326, "mttb",    {{11,5,GREG}} },
  864.  { 0x7c000366, "mttbu",   {{11,5,GREG}} },
  865.  { 0x7c000226, "mftb",    {{21,5,GREG}} },
  866.  { 0x7c000266, "mftbu",   {{21,5,GREG}} },
  867.  
  868. /* Instructions (from book IV) */
  869.  { 0x24000000, "dozi",    {{21,5,GREG}, {16,5,GREG}, {0,16,SI}} },
  870.  { 0x7c000210, "doz",     {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  871.  { 0x7c000211, "doz.",    {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  872.  { 0x7c000610, "dozo",    {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  873.  { 0x7c000611, "dozo.",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  874.  
  875.  { 0x7c0002d0, "abs",     {{21,5,GREG}, {16,5,GREG}} },
  876.  { 0x7c0002d1, "abs.",    {{21,5,GREG}, {16,5,GREG}} },
  877.  { 0x7c0006d0, "abso",    {{21,5,GREG}, {16,5,GREG}} },
  878.  { 0x7c0006d1, "abso.",   {{21,5,GREG}, {16,5,GREG}} },
  879.  
  880.  { 0x7c0003d0, "nabs",    {{21,5,GREG}, {16,5,GREG}} },
  881.  { 0x7c0003d1, "nabs.",   {{21,5,GREG}, {16,5,GREG}} },
  882.  { 0x7c0007d0, "nabso",   {{21,5,GREG}, {16,5,GREG}} },
  883.  { 0x7c0007d1, "nabso.",  {{21,5,GREG}, {16,5,GREG}} },
  884.  
  885.  { 0x1c000000, "mulli",   {{21,5,GREG}, {16,5,GREG}, {0,16,SI}} },
  886.  { 0x7c0000d6, "mul",     {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  887.  { 0x7c0000d7, "mul.",    {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  888.  { 0x7c0004d6, "mulo",    {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  889.  { 0x7c0004d7, "mulo.",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  890.  
  891.  { 0x7c000296, "div",     {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  892.  { 0x7c000297, "div.",    {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  893.  { 0x7c000696, "divo",    {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  894.  { 0x7c000697, "divo.",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  895.  
  896.  { 0x7c0002d6, "divs",    {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  897.  { 0x7c0002d7, "divs.",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  898.  { 0x7c0006d6, "divso",   {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  899.  { 0x7c0006d7, "divso.",  {{21,5,GREG}, {16,5,GREG}, {11,5,GREG}} },
  900.  
  901.  { 0x58000000, "rlmi",
  902.     {{16,5,GREG}, {21,5,GREG}, {11,5,GREG},  {6,5,NUM}, {1,5,NUM}} },
  903.  { 0x58000001, "rlmi.",
  904.     {{16,5,GREG}, {21,5,GREG}, {11,5,GREG},  {6,5,NUM}, {1,5,NUM}} },
  905.  
  906.  { 0x7c000432, "rrib",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  907.  { 0x7c000433, "rrib.",   {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  908.  
  909.  { 0x7c00003a, "maskg",   {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  910.  { 0x7c00003b, "maskg.",  {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  911.  
  912.  { 0x7c00043a, "maskir",  {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  913.  { 0x7c00043b, "maskir.", {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  914.  
  915.  { 0x7c000130, "slq",     {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  916.  { 0x7c000131, "slq.",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  917.  
  918.  { 0x7c000530, "srq",     {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  919.  { 0x7c000531, "srq.",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  920.  
  921.  { 0x7c000170, "sliq",    {{16,5,GREG}, {21,5,GREG}, {11,5,NUM}} },
  922.  { 0x7c000171, "sliq.",   {{16,5,GREG}, {21,5,GREG}, {11,5,NUM}} },
  923.  
  924.  { 0x7c000570, "sriq",    {{16,5,GREG}, {21,5,GREG}, {11,5,NUM}} },
  925.  { 0x7c000571, "sriq.",   {{16,5,GREG}, {21,5,GREG}, {11,5,NUM}} },
  926.  
  927.  { 0x7c0001f0, "slliq",   {{16,5,GREG}, {21,5,GREG}, {11,5,NUM}} },
  928.  { 0x7c0001f1, "slliq.",  {{16,5,GREG}, {21,5,GREG}, {11,5,NUM}} },
  929.  
  930.  { 0x7c0005f0, "srliq",   {{16,5,GREG}, {21,5,GREG}, {11,5,NUM}} },
  931.  { 0x7c0005f1, "srliq.",  {{16,5,GREG}, {21,5,GREG}, {11,5,NUM}} },
  932.  
  933.  { 0x7c0001b0, "sllq",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  934.  { 0x7c0001b1, "sllq.",   {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  935.  
  936.  { 0x7c0005b0, "srlq",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  937.  { 0x7c0005b1, "srlq.",   {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  938.  
  939.  { 0x7c000132, "sle",     {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  940.  { 0x7c000133, "sle.",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  941.  
  942.  { 0x7c000532, "sre",     {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  943.  { 0x7c000533, "sre.",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  944.  
  945.  { 0x7c0001b2, "sleq",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  946.  { 0x7c0001b3, "sleq.",   {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  947.  
  948.  { 0x7c0005b2, "sreq",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  949.  { 0x7c0005b3, "sreq.",   {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  950.  
  951.  { 0x7c000770, "sraiq",   {{16,5,GREG}, {21,5,GREG}, {11,5,NUM}} },
  952.  { 0x7c000771, "sraiq.",  {{16,5,GREG}, {21,5,GREG}, {11,5,NUM}} },
  953.  
  954.  { 0x7c000730, "sraq",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  955.  { 0x7c000731, "sraq.",   {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  956.  
  957.  { 0x7c000732, "srea",    {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  958.  { 0x7c000733, "srea.",   {{16,5,GREG}, {21,5,GREG}, {11,5,GREG}} },
  959.  
  960.  { 0, "" } /* end of table marker */
  961. };
  962.